RCE英文全称:remote command/code execute(远程命令/代码执行漏洞)
分为远程命令执行ping和远程代码执行evel。
漏洞出现的原因:没有在输入口做输入处理。
我们常见的路由器、防火墙、入侵检测等设备的web管理界面上
一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。其实这就是一个接口,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统,这就是RCE漏洞。相当于直接操控服务器电脑的cmd命令行!高危漏洞!
eval执行
eval(xxx)函数将xxx当做PHP语言执行
<?php evaL ($_REQUEST [“cmd”] ) ?>
_REQUEST包含了GET、_POST、$_COOKIE的所有内容,是它们的集合体。也就内是说只要用其中一种方容式做一个表单,把cmd这个变量给POST或者GET,甚至用cookies就可以把传输上去的内容执行。简而言之吧,就是执行cmd的值。以上代码就是执行cmd
进入题目
我们先查它的目录?cmd=system('ls');
没啥有用的东西,我们查看上一级目录?cmd=system('ls /');
可以看到有flag的地址,我们查看他?cmd=system('cat /flag_28094');
得到flag
在url后添加命令时要注意:的使用
文件包含
程序开发人员通常会把可重复使用的函数写到单个文件中,在使用某个函数的时候,直接调用此文件,无需再次编写,这种调用文件的过程通常称为包含。
程序开发人员都希望代码更加灵活,所以通常会把被包含的文件设置为变量,来进行动态调用,但正是由于这种灵活性,从而导致客户端可以调用任意文件,造成文件包含漏洞
进入题目
strpos函数的定义:
strpos — 查找字符串首次出现的位置
作用:主要是用来查找字符在字符串中首次出现的位置。
结构:int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
strpos 函数返回查找到的子字符串的下标。如果字符串开头就是我们要搜索的目标,则返回下标 0 ;如果搜索不到,则返回 false 。在这道题目中,开发者只考虑到 strpos 函数返回 false 的情况,却忽略了匹配到的字符在首位时会返回 0 的情况,因为 false和 0 的取反均为 true。 这样我们就可以在用户名和密码首字符注入 < 符号,从而注入xml数据。
我们点击shell